int a[2][2]={1,2,3,4};哪么*a代表什么意思?
来源:百度知道 编辑:UC知道 时间:2024/06/23 02:30:12
如果是a[0][0],为什么
main()
{ int a[2][2]={1,2,3,4},*p=a;
printf("%d",*a);
getch();
}
输出不是1
main()
{ int a[2][2]={1,2,3,4},*p=a;
printf("%d",*a);
getch();
}
输出不是1
这涉及到二维指针的概念。由于a是一个二数组,所以它是一个二维指针,此时,*a相当于a的低一维的数组名,这里*a即是二维数组第一行{1,2}的数组名,严格来讲,它不表示某一个元素的值,但由于C对指针的检查并不严格,程序可以运行通过,也可以在不同维指针间相互赋值(如上面的*p=a,p是一维整型指针,而a是二维整型指针,类型不同却可以相互赋值),但往往会有一些莫名其妙的结果产生,而且这样的问题的探讨是没有意义的,因为它本身是一种不规范。因此建议使用C++对C程序进行编译,因为C++中对指针有更为严格的检查。
对于本段程序,指针变量a和p表示的都是a[0][0]的地址,*p表示的确是a[0][0],*a不表示a[0][0]。不建议这使用。
楼主,你写错了把
应该是*p=a[2];把
你上面写的可以运行吗
对于数组名,实际它就相当于是一个
指针而已,它是存储数组首地址的
即它是指向数组的第一个元素的
代*的符号是指针的意思,*a就是指针指向了数组a的首地址即a[0][0]!
应该改为*p吧,p是指针啊,a是数组啊
*p就是1了
说类不对
别上板砖
学完指针就知道了
unsigned int a=2;int b = -3;
struct st{ int a;int b[2];}a;
C语言:int a=2; a+=a-=a*a 执行后.......
int a[3],b[3];a={1,2,3};b=a;有什么问题?为什么不能赋值?
已知int a=1;int b;b=(++a)+(++a)+(++a);为什么b=10?
c++数组问题 例如:int a[5]={2,10}
int a=2,b=3; float x=3.5,y=2.5; (float) (a+b)/2+(int)x%(int)y怎么算?
对于二维数组,int a[2][2] ={{1,2},{3,4}},为什么a=a[0],但*a != *a[0]
对于二维数组,int a[2][2] ={{1,2},{3,4}};
int a[5]={1,2,3,4,5} 将每个元素都乘2